iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1
Modern Web

認識LIFF容易嗎?系列 第 21

[Day 21]LIFF SendMessages

  • 分享至 

  • xImage
  •  

前言

可以從透過LIFF APP發送訊息?和一般在聊天視窗發送訊息有什麼不一樣!?

liff.sendMessages()

用戶身分發送訊息給Line聊天機器人。

透過執行此方法,發送訊息給Line聊天機器人,實際上,和在有Line聊天機器人的聊天視窗內,傳訊息和它對話是一樣的意思。

這句話是什麼意思?

首先,先來認識一下,當用戶在有Line聊天機器人的聊天視窗內,傳訊息和它對話,它是怎麼收到用戶傳來的訊息。
image
如圖,當用戶在聊天視窗內,發送訊息後,透過LINE平台,會將訊息傳到Webhook伺服器。當企業內部系統,收到介接進來的訊息後,再將回覆訊息,層層傳遞後,用戶就能在聊天視窗內,看到聊天機器人回覆的訊息。

這裡的Webhook伺服器,是開發人員在Line Developers Console中,建立Messaging API Channel需要填的欄位,是HTTPS開頭的URL。

回到一開始的那句話,也就是說,當在LIFF APP執行liff.sendMessages(),發送訊息給Line聊天機器人,用戶的訊息也會如上述的流程那樣,透過LINE平台,經過Webhook伺服器等等。

為什麼要用戶會需要透過liff.sendMessages()發送訊息,而不是直接在聊天視窗內發送訊息?

這其實是我一開始看到這個方法的時候,起初的疑問。但後來想想,如果用戶在LIFF APP中,填寫好表單,按下發送鈕,同時組成字串,並觸發liff.sendMessages(),就能很輕鬆的將表單內容送給Line聊天機器人,應該是這樣吧。

Message event

用戶可以發送什麼樣的訊息給聊天機器人呢?

先來更進一步認識透過Webhook介接進來的訊息長這樣:

{
  "destination": "xxxxxxxxxx",
  "events": [
    {
      "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
      "type": "message",
      "mode": "active",
      "timestamp": 1462629479859,
      "source": {
        "type": "user",
        "userId": "U4af4980629..."
      },
      "message": {
        "id": "325708",
        "type": "text",
        "text": "Hello, world! (love)",
        "emojis": [
          {
            "index": 14,
            "length": 6,
            "productId": "5ac1bfd5040ab15980c9b435",
            "emojiId": "001"
          }
        ]
      }
    }
  ]
}

events是一個陣列,當中的每個物件是來自用戶傳來的訊息,詳細請參考這篇

主要是要簡單介紹一下,message的物件中的type,是指用戶傳來的訊息是哪種類型。
Message event可能會有:

  • Text
  • Image
  • Video
  • Audio
  • Location
  • Template
  • Flex

實作

liff.sendMessages([
  {
    type: 'text',
    text: 'Hello, World!'
  }
])
  .then(() => {
    console.log('message sent');
  })
  .catch((err) => {
    console.log('error', err);
  });

參考


上一篇
[Day 20] LIFF PermanentLink.setExtraQueryParam
下一篇
[Day 22] LIFF OpenWindow
系列文
認識LIFF容易嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言